package Ventanas.admin;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;

import util.GetFrame;
import util.SocketManager;
import util.Varias;
import BaseDeDatos.ConsultasUsuario;
import ClasesBasicas.Usuario;
import Ventanas.usuario.Ventana;

public class PanelInicialA extends JPanel implements ActionListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private VentanaA ventana;
	
	private javax.swing.JButton bCrear;
	private javax.swing.JButton bDesconectar;
	private javax.swing.JButton bEliminar;
	private javax.swing.JButton bModificar;
	private javax.swing.JButton bSalir;
	private javax.swing.JComboBox comboBox;
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JLabel lMaxConexion;
	private static javax.swing.JList listaUsuariosConectados;
	private javax.swing.JTextField tfMaxConexion;
	private JButton bNumConexiones;
	private JLabel fondo;
	private DefaultComboBoxModel dt=new DefaultComboBoxModel();
	private javax.swing.JComboBox comboBoxMod;
	private List<Usuario> usuarios = ConsultasUsuario.getUsuarios();
	public static List<SocketManager> sockets = new ArrayList<SocketManager>();
	
	public PanelInicialA(VentanaA v){
		ventana = v;
		ventana.pack();
		ventana.setLocationRelativeTo(null);
		ventana.setVisible( true );
		ventana.getContentPane().add( this, "Center" );
		ventana.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		
		lMaxConexion = new javax.swing.JLabel();
		tfMaxConexion = new javax.swing.JTextField();
		tfMaxConexion.setText(GetFrame.getVentanaA(this).getMaximoConexiones()+"");
		jScrollPane1 = new javax.swing.JScrollPane();
		listaUsuariosConectados = new javax.swing.JList();
		bDesconectar = new javax.swing.JButton();
		bCrear = new javax.swing.JButton();
		bModificar = new javax.swing.JButton();
		comboBox = new javax.swing.JComboBox();
		bEliminar = new javax.swing.JButton();
		bSalir = new javax.swing.JButton();
		bNumConexiones = new JButton();
		fondo = new JLabel();
		comboBoxMod = new javax.swing.JComboBox();

		setLayout(null);

		lMaxConexion.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
		lMaxConexion.setText("Maximo numero de conexiones: ");
		lMaxConexion.setForeground(new java.awt.Color(255, 255, 255));
		add(lMaxConexion);
		lMaxConexion.setBounds(169, 122, 200, 30);
		add(tfMaxConexion);
		tfMaxConexion.setBounds(373, 122, 40, 30);

		Varias.cargarJListSockets(listaUsuariosConectados, Servidor.Servidor.sockets);
		jScrollPane1.setViewportView(listaUsuariosConectados);

		add(jScrollPane1);
		jScrollPane1.setBounds(170, 210, 180, 230);

		bDesconectar.setText("Desconectar");
		add(bDesconectar);
		bDesconectar.setBounds(170, 450, 110, 30);
		bDesconectar.addActionListener(this);

		bCrear.setText("Crear usuario");
		add(bCrear);
		bCrear.setBounds(440, 210, 130, 30);
		bCrear.addActionListener(this);

		bModificar.setText("Modificar usuario");
		add(bModificar);
		bModificar.setBounds(580, 280, 130, 30);
		bModificar.addActionListener(this);

		
		
		Varias.cargarComboUsuarios(comboBox, usuarios);
		add(comboBox);
		comboBox.setBounds(440, 340, 130, 30);

		bEliminar.setText("Eliminar");
		add(bEliminar);
		bEliminar.setBounds(580, 338, 80, 30);
		bEliminar.addActionListener(this);

		bSalir.setText("Salir");
		add(bSalir);
		bSalir.setBounds(640, 520, 80, 30);

		bNumConexiones.setText("Editar");
		add(bNumConexiones);
		bNumConexiones.setBounds(420, 123, 80, 30);
		bNumConexiones.addActionListener(this);

		Varias.cargarComboUsuarios(comboBoxMod, usuarios);
        add(comboBoxMod);
        comboBoxMod.setBounds(440, 280, 130, 30);
       
	}
	


	@Override
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource().equals(bEliminar))
		{
			ConsultasUsuario.borrarUsuario(comboBox.getSelectedItem().toString());
			comboBox.setModel(dt);
			Varias.cargarComboUsuarios(comboBox, ConsultasUsuario.getUsuarios());
			comboBox.repaint();
			this.repaint();
			comboBox.setSelectedIndex(0);
		}
		if(e.getSource().equals(bCrear))
		{
			VentanaA ventana = GetFrame.getVentanaA(this);
			this.setVisible(false);
			PanelCrear crear= new PanelCrear(this);
			ventana.getContentPane().add(crear);
			crear.setVisible(true);
		}
		if(e.getSource().equals(bModificar))
		{
			VentanaA ventana = GetFrame.getVentanaA(this);
			this.setVisible(false);
			PanelModificar modificar= new PanelModificar(this,usuarios.get(comboBoxMod.getSelectedIndex()));
			ventana.getContentPane().add(modificar);
			modificar.setVisible(true);
			
		}
		if(e.getSource()==(bDesconectar))
		{
			VentanaA ventana = GetFrame.getVentanaA(this);
			System.out.println(this.getSockets().size());
		}
		if(e.getSource().equals(bNumConexiones))
		{
			ventana.setMaximoConexiones(Integer.parseInt(tfMaxConexion.getText()));
			
		}
		
		
	}public static List<SocketManager> getSockets()
	{
		return sockets;
	}
	
	public static void echarUser (String id_socket)
	{
		for(int i=0;i<sockets.size();i++)
		{
			if(sockets.get(i).toString().equals(id_socket))
			{
				try {
					sockets.get(i).CerrarStreams();
					sockets.get(i).CerrarSocket();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
		}
	}
	public static void insertarSocket (SocketManager manager )
	{
		sockets.add(manager);
		Varias.cargarJListSockets(listaUsuariosConectados, getSockets());
		listaUsuariosConectados.setEnabled(true);
	}
	
	public static void main(String [] args){
		//Look & Feel Nimbus
		for(UIManager.LookAndFeelInfo laf:UIManager.getInstalledLookAndFeels()){
			if("Nimbus".equals(laf.getName()))
				try {
					UIManager.setLookAndFeel(laf.getClassName());
				} catch (Exception ex) {
				}
		}
		new VentanaA();
	}

}